package com.hzncc.flowable_diboot.dto;

import com.diboot.core.binding.query.BindQuery;
import com.diboot.core.binding.query.Comparison;
import com.diboot.iam.entity.IamUser;
import com.hzncc.flowable_diboot.entity.CustomConnector;
import com.hzncc.flowable_diboot.entity.Customer;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 客户联系人 DTO定义
 *
 * @author MyName
 * @version 1.0
 * @date 2024-05-30
 * Copyright © MyCorp
 */
@Getter
@Setter
@Accessors(chain = true)
public class CustomConnectorDTO extends CustomConnector {
    private static final long serialVersionUID = 1212177183511858763L;

    /**
     * 所属部门 关联信息
     */
    @BindQuery(entity = IamUser.class, column = "orgId", condition = "this.userId = id")
    private String dept;
    /**
     * 创建时间
     */
    @BindQuery(comparison = Comparison.GE)
    private LocalDateTime createTime;
    /**
     * 创建时间 起始
     */
    @BindQuery(comparison = Comparison.GE, column = "create_time")
    private LocalDate createTimeBegin;

    /**
     * 创建时间 截止
     */
    @BindQuery(comparison = Comparison.LT, column = "create_time")
    private LocalDate createTimeEnd;
    /**
     * 更新时间
     */
    @BindQuery(comparison = Comparison.GE)
    private LocalDateTime updateTime;
    /**
     * 更新时间 起始
     */
    @BindQuery(comparison = Comparison.GE, column = "update_time")
    private LocalDate updateTimeBegin;

    /**
     * 更新时间 截止
     */
    @BindQuery(comparison = Comparison.LT, column = "update_time")
    private LocalDate updateTimeEnd;

    /**
     * 客户名称
     */
    @BindQuery(entity = Customer.class,column = "name",condition = "this.customerId = id", comparison = Comparison.LIKE)
    private String customerIdLabel;

    public LocalDate getCreateTimeEnd() {
        if (getCreateTime() != null) {
            return getCreateTime().plusDays(1).toLocalDate();
        }
        if (createTimeEnd != null) {
            return createTimeEnd.plusDays(1);
        }
        return null;
    }

    public LocalDate getUpdateTimeEnd() {
        if (getUpdateTime() != null) {
            return getUpdateTime().plusDays(1).toLocalDate();
        }
        if (updateTimeEnd != null) {
            return updateTimeEnd.plusDays(1);
        }
        return null;
    }

}